#include <inctypes.h>
#include <incctrls.h>

/*********************************************************************************
* 
* ktime_t_init - 初始化系统时间结构体
* 
* DESCRIPTION
*/

void ktime_t_init
    (
    ktime_t * initp
    )
    {
    hal_spinlock_init (&initp->lock);

    /* 初始化时间结构体子域 */

    initp->year = 0;
    initp->mon  = 0;
    initp->day  = 0;
    initp->date = 0;
    initp->hour = 0;
    initp->min  = 0;
    initp->sec  = 0;
    }

/*********************************************************************************
* 
* krl_time_init - 初始化系统时间
* 
* DESCRIPTION
*/

void krl_time_init (void)
    {
    ktime_t_init (&osktime);

    return;
    }

/*********************************************************************************
* 
* krl_time_update - 更新内核系统时间
* 
* DESCRIPTION
*/

void krl_time_update
    (
    uint_t year,
    uint_t mon,
    uint_t day,
    uint_t date,
    uint_t hour,
    uint_t min,
    uint_t sec
    )
    {
    cpuflg_t  cpuflg;
    ktime_t * ktime = &osktime;

    /* 自旋锁 上锁 */

    spinlock_saveflg_cli (&ktime->lock, &cpuflg);

    /* 系统时间变量赋值 */

    ktime->year = year;      /* 年 */
    ktime->mon  = mon;       /* 月 */
    ktime->day  = day;       /* 星期 */
    ktime->date = date;      /* 日 */
    ktime->hour = hour;      /* 时 */
    ktime->min  = min;       /* 分 */
    ktime->sec  = sec;       /* 秒 */

    /* 自旋锁 解锁 */

    spinunlock_restflg_sti (&ktime->lock, &cpuflg);

    return;
    }

